/*
 * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */

package javax.print.event;

import javax.print.PrintService;
import javax.print.attribute.AttributeSetUtilities;
import javax.print.attribute.PrintServiceAttributeSet;

/**
 * Class PrintServiceAttributeEvent encapsulates an event a
 * Print Service instance reports to let the client know of
 * changes in the print service state.
 */

public class PrintServiceAttributeEvent extends PrintEvent {

  private static final long serialVersionUID = -7565987018140326600L;

  private PrintServiceAttributeSet attributes;

  /**
   * Constructs a PrintServiceAttributeEvent object.
   *
   * @param source the print job generating  this event
   * @param attributes the attribute changes being reported
   * @throws IllegalArgumentException if <code>source</code> is <code>null</code>.
   */
  public PrintServiceAttributeEvent(PrintService source,
      PrintServiceAttributeSet attributes) {

    super(source);
    this.attributes = AttributeSetUtilities.unmodifiableView(attributes);
  }


  /**
   * Returns the print service.
   *
   * @return Print Service object.
   */
  public PrintService getPrintService() {

    return (PrintService) getSource();
  }


  /**
   * Determine the printing service attributes that changed and their new
   * values.
   *
   * @return Attributes containing the new values for the service attributes that changed. The
   * returned set may be unmodifiable.
   */
  public PrintServiceAttributeSet getAttributes() {

    return attributes;
  }

}
